package taller.dataLayer.entities;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;

import taller.dataLayer.vo.ItemSolicitudCotizacionVO;
import taller.dataLayer.vo.SolicitudCotizacionVO;

@Entity
public class SolicitudCotizacion implements Serializable {
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Integer numero;
	
	private Date fecha;
	private Integer numeroTaller;
	@OneToMany(cascade = CascadeType.ALL)
	@JoinColumn(name = "solicitudCotizacion_numero")
	private List<ItemSolicitudCotizacion> items;
	private static final long serialVersionUID = 1L;

	public SolicitudCotizacion() {
		items = new ArrayList<ItemSolicitudCotizacion>();
		fecha = new Date();
	}
	
	public SolicitudCotizacionVO getVO(){
		List<ItemSolicitudCotizacionVO> itemsVO = new ArrayList<ItemSolicitudCotizacionVO>();
		
		for (ItemSolicitudCotizacion itemSolicitudCotizacion : items) {
			ItemSolicitudCotizacionVO itemVO = itemSolicitudCotizacion.getVO();
			itemsVO.add(itemVO);
		}
		
		SolicitudCotizacionVO solicitudCotizacionVO = new SolicitudCotizacionVO(this.numero, this.fecha,
				this.numeroTaller, itemsVO);
		
		return solicitudCotizacionVO;
	}
	
	public void setVO(SolicitudCotizacionVO solicitudCotizacionVO){
		List<ItemSolicitudCotizacion> items = new ArrayList<ItemSolicitudCotizacion>();
		
		List<ItemSolicitudCotizacionVO> itemsVO = solicitudCotizacionVO.getItems();
		if (itemsVO != null) {
			for (ItemSolicitudCotizacionVO itemSolicitudCotizacionVO : itemsVO) {
				ItemSolicitudCotizacion item = new ItemSolicitudCotizacion();
				item.setVO(itemSolicitudCotizacionVO);
				items.add(item);
			}
		}

		this.items = items;
		this.fecha = solicitudCotizacionVO.getFecha();
		this.numero = solicitudCotizacionVO.getNumero();
		this.numeroTaller = solicitudCotizacionVO.getNumeroTaller();
	}
	
	public Integer getNumero() {
		return this.numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}   
	
	public Date getFecha() {
		return this.fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}   
	
	public List<ItemSolicitudCotizacion> getItems() {
		return this.items;
	}

	public void setItems(List<ItemSolicitudCotizacion> items) {
		this.items = items;
	}

	public Integer getNumeroTaller() {
		return numeroTaller;
	}

	public void setNumeroTaller(Integer numeroTaller) {
		this.numeroTaller = numeroTaller;
	}
}
